/******************************************************************************* * Copyright (c) 2000, 2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.ui.tests.refactoring; import junit.framework.Test; import junit.framework.TestSuite; import org.eclipse.jdt.testplugin.JavaProjectHelper; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.internal.corext.refactoring.changes.RenameSourceFolderChange; public class RenameSourceFolderChangeTests extends RefactoringTest { private static final Class clazz= RenameSourceFolderChangeTests.class; public RenameSourceFolderChangeTests(String name){ super(name); } public static Test suite() { return new RefactoringTestSetup(new TestSuite(clazz)); } public static Test setUpTest(Test test) { return new RefactoringTestSetup(test); } public void test0() throws Exception { String oldName= "oldName"; String newName= "newName"; try{ IJavaProject testProject= RefactoringTestSetup.getProject(); IPackageFragmentRoot oldRoot= JavaProjectHelper.addSourceContainer(RefactoringTestSetup.getProject(), oldName); assertTrue("old folder should exist here", oldRoot.exists()); RenameSourceFolderChange change= new RenameSourceFolderChange(oldRoot, newName); change.initializeValidationData(new NullProgressMonitor()); performChange(change); assertTrue("old folder should not exist", ! oldRoot.exists()); assertEquals("expected 3 pfr's", 3, testProject.getPackageFragmentRoots().length); IPackageFragmentRoot[] newRoots= testProject.getPackageFragmentRoots(); for (int i= 0; i < newRoots.length; i++){ assertTrue("should exist " + i, newRoots[i].exists()); } } finally{ JavaProjectHelper.removeSourceContainer(RefactoringTestSetup.getProject(), newName); } } public void test1() throws Exception { String oldName1= "oldName1"; String oldName2= "oldName2"; String newName1= "newName"; try{ IJavaProject testProject= RefactoringTestSetup.getProject(); IPackageFragmentRoot oldRoot1= JavaProjectHelper.addSourceContainer(RefactoringTestSetup.getProject(), oldName1); IPackageFragmentRoot oldRoot2= JavaProjectHelper.addSourceContainer(RefactoringTestSetup.getProject(), oldName2); assertTrue("old folder should exist here", oldRoot1.exists()); assertTrue("old folder 2 should exist here", oldRoot2.exists()); RenameSourceFolderChange change= new RenameSourceFolderChange(oldRoot1, newName1); change.initializeValidationData(new NullProgressMonitor()); performChange(change); assertTrue("old folder should not exist", ! oldRoot1.exists()); assertEquals("expected 4 pfr's", 4, testProject.getPackageFragmentRoots().length); IPackageFragmentRoot[] newRoots= testProject.getPackageFragmentRoots(); for (int i= 0; i < newRoots.length; i++){ //DebugUtils.dump(newRoots[i].getElementName()); assertTrue("should exist " + i, newRoots[i].exists()); if (i == 2) assertEquals("3rd position should be:" + newName1, newName1, newRoots[i].getElementName()); } }finally{ JavaProjectHelper.removeSourceContainer(RefactoringTestSetup.getProject(), newName1); JavaProjectHelper.removeSourceContainer(RefactoringTestSetup.getProject(), oldName2); } } public void testBug129991() throws Exception { IJavaProject project= JavaProjectHelper.createJavaProject("RenameSourceFolder", "bin"); try { IPath projectPath= project.getPath(); IPath[] exclusion= new IPath[] { new Path("src/") }; JavaProjectHelper.addToClasspath(project, JavaCore.newSourceEntry(projectPath, exclusion)); IPackageFragmentRoot src= JavaProjectHelper.addSourceContainer(project, "src"); RenameSourceFolderChange change= new RenameSourceFolderChange(src, "src2"); change.initializeValidationData(new NullProgressMonitor()); performChange(change); assertTrue("src should not exist", ! src.exists()); assertEquals("expected 2 pfr's", 2, project.getPackageFragmentRoots().length); IClasspathEntry[] rawClasspath= project.getRawClasspath(); assertEquals(projectPath, rawClasspath[0].getPath()); assertEquals("src2/", rawClasspath[0].getExclusionPatterns()[0].toString()); assertEquals(projectPath.append("src2/"), rawClasspath[1].getPath()); } finally { project.getProject().delete(true, null); } } }